
#ifndef __COMPONENT_HPP__
#define __COMPONENT_HPP__

#include <string>

class GameObject;
typedef std::string comp_id_type;

class GameComponent {
public:
	
	GameComponent() : mOwnerObj(0) {}
	virtual ~GameComponent() = 0 {}

	virtual const comp_id_type& componentID() const = 0;
	virtual const comp_id_type& familyID() const = 0;

	virtual void update() {}
	virtual void setup() {}

	void setOwnerObject( GameObject* obj) { mOwnerObj = obj; }
	GameObject* getOwnerObject() const { return mOwnerObj; }

private:
	GameObject *mOwnerObj;
};

#endif
